[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事では、Scala 3において廃止されたScala 2のマクロについて解説します。
Scala 2のマクロは廃止されました
Scala 2のマクロ機構はScala 3においてはサポートされなくなりました。
もともとScala 2のマクロはexperimentalだったので、将来のサポートは約束されていませんでした。
Scala 3においては、2系のマクロのコンパイルはできますが、実行はできません。
Scala 3にマクロの正式版が導入されました
代わりに、新しいマクロ機構が導入されました。
2系のマクロよりも簡潔で安全に使用できるようになりました。
しかも、3系のマクロはexperimental
ではありません。
正式版です。
これは嬉しいですね。
ぜひ積極的に使っていきましょう。
2系のマクロから3系のマクロへの移行は、技術的には概ね可能
すでに2系のマクロで実装されているコードは、3系のマクロへ移行することは可能でしょうか?
先行して移行したプロジェクトが複数あるため、技術的には概ね可能であることが示されています。
現段階では移行ツールは用意されていないので、移行するには多くの手作業が必要となります。
また、3系のマクロではクラスに対してpublicなメンバを追加するなどの安全でない操作が制限されているため、このような機能に依存している場合には、コード生成などの回避策が別途必要があります。
移行についての参考情報については、Scala Centerの移行ガイドにて詳しく提供されています。
サイト内検索
カテゴリ「Scala 3で廃止予定の機能」の記事
弱適合:Scala 3で廃止予定の機能(13)
DelayedInitの解説:Scala 3で廃止予定の機能(1)
[this]修飾子:Scala 3で廃止予定の機能(12)
Scala 3で変更・廃止予定の機能と移行作業についてのまとめ
シンボルリテラルの解説:Scala 3で廃止予定の機能(3)
自動適用:Scala 3で廃止予定の機能(14)
forSomeによる存在型:Scala 3で廃止予定の機能(6)
型射影:Scala 3で廃止予定の機能(7)
手続き型構文:Scala 3で廃止予定の機能(8)
先行初期化:Scala 3で廃止予定の機能(9)
do-while文の解説:Scala 3で廃止予定の機能(4)
Scala 2のマクロ:Scala 3で廃止予定の機能(5)
クラスシャドウイング:Scala 3で廃止予定の機能(10)
XMLリテラルの解説:Scala 3で廃止予定の機能(2)
大域脱出:Scala 3で廃止予定の機能(11)
カテゴリ「Scala 3で廃止予定の機能」の記事
弱適合:Scala 3で廃止予定の機能(13)
DelayedInitの解説:Scala 3で廃止予定の機能(1)
[this]修飾子:Scala 3で廃止予定の機能(12)
Scala 3で変更・廃止予定の機能と移行作業についてのまとめ
シンボルリテラルの解説:Scala 3で廃止予定の機能(3)
自動適用:Scala 3で廃止予定の機能(14)
forSomeによる存在型:Scala 3で廃止予定の機能(6)
型射影:Scala 3で廃止予定の機能(7)
手続き型構文:Scala 3で廃止予定の機能(8)
先行初期化:Scala 3で廃止予定の機能(9)
do-while文の解説:Scala 3で廃止予定の機能(4)
Scala 2のマクロ:Scala 3で廃止予定の機能(5)
クラスシャドウイング:Scala 3で廃止予定の機能(10)
XMLリテラルの解説:Scala 3で廃止予定の機能(2)
大域脱出:Scala 3で廃止予定の機能(11)